SQL Server-এ Security এর দুটি গুরুত্বপূর্ণ স্তর রয়েছে: Schema Level Security এবং Object Level Security। এগুলি ডেটাবেসের মধ্যে তথ্য সুরক্ষা এবং অ্যাক্সেস কন্ট্রোল বজায় রাখার জন্য ব্যবহৃত হয়। এই দুটি স্তর ব্যবহার করে আপনি নির্দিষ্ট স্কিমা বা অবজেক্টের ওপর অনুমতি (permissions) এবং নিরাপত্তা নীতি নির্ধারণ করতে পারেন।
1. Schema Level Security
Schema Level Security মূলত ডেটাবেসের schema স্তরে নিরাপত্তা কন্ট্রোল ব্যবস্থাপনাকে নির্দেশ করে। Schema একটি স্কেলাবল ধারণা যা ডেটাবেসের টেবিল, ভিউ, স্টোরড প্রোসিজার, ফাংশন এবং অন্যান্য অবজেক্টকে একত্রিত করে। এক বা একাধিক স্কিমাতে অন্তর্ভুক্ত অবজেক্টগুলির ওপর ব্যবহারকারী বা রোলগুলির অ্যাক্সেস কন্ট্রোল করা হয়।
1.1. Schema এর ধারণা
SQL Server এ, একটি schema একটি কন্টেইনার হিসেবে কাজ করে, যা একটি ডেটাবেসের অবজেক্টগুলিকে গ্রুপ করে রাখে। একটি schema এর মধ্যে থাকা সমস্ত অবজেক্ট একই মালিকানাধীন হতে পারে এবং এটি একাধিক ব্যবহারকারী বা রোলের মাধ্যমে অ্যাক্সেসযোগ্য হতে পারে। সাধারণভাবে, schema নিরাপত্তা সেটিংস দ্বারা প্রভাবিত হয়, যার মাধ্যমে আপনি স্কিমার মধ্যে থাকা অবজেক্টগুলোর ওপর নিয়ন্ত্রণ রাখতে পারেন।
1.2. Schema Level Permissions
Schema Level Security ব্যবহারের মাধ্যমে, আপনি পুরো schema এর ওপর একটি নির্দিষ্ট ব্যবহারকারী বা রোলের জন্য বিভিন্ন অনুমতি প্রদান করতে পারেন। যেমন:
- SELECT: একটি schema-এর টেবিল বা ভিউ থেকে ডেটা পড়ার অনুমতি।
- INSERT: একটি schema-এর টেবিল বা ভিউতে ডেটা সন্নিবেশ করার অনুমতি।
- UPDATE: একটি schema-এর টেবিল বা ভিউতে ডেটা পরিবর্তন করার অনুমতি।
- DELETE: একটি schema-এর টেবিল বা ভিউ থেকে ডেটা মুছে ফেলার অনুমতি।
- ALTER: schema-র অবজেক্টগুলির কাঠামো পরিবর্তন করার অনুমতি।
- CONTROL: schema-র সম্পূর্ণ নিয়ন্ত্রণ, যেমন, অবজেক্ট তৈরি এবং মুছে ফেলা।
1.3. Schema Level Security এর উদাহরণ
ধরা যাক, আপনি Sales নামের একটি schema তৈরি করেছেন এবং এই schema-এর মধ্যে টেবিল, ভিউ, প্রোসিজার ইত্যাদি রয়েছে। আপনি যদি Sales schema-এর সমস্ত অবজেক্টে একটি নির্দিষ্ট ব্যবহারকারীকে অ্যাক্সেস দিতে চান, তবে নিম্নলিখিত SQL কোডটি ব্যবহার করতে পারেন:
GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Sales TO SalesUser;
এটি SalesUser নামক ব্যবহারকারীকে Sales schema এর সমস্ত অবজেক্টে SELECT, INSERT, UPDATE, এবং DELETE অনুমতি দেবে।
2. Object Level Security
Object Level Security হল SQL Server এ ডেটাবেসের অবজেক্ট যেমন টেবিল, ভিউ, স্টোরড প্রোসিজার, ফাংশন ইত্যাদির উপর নিরাপত্তা কন্ট্রোল। এটি আপনাকে আরও সূক্ষ্ম নিয়ন্ত্রণ দিতে সাহায্য করে, যেখানে আপনি একটি নির্দিষ্ট অবজেক্টের ওপর নির্দিষ্ট ব্যবহারকারী বা রোলের অ্যাক্সেস অনুমতি কাস্টমাইজ করতে পারেন।
2.1. Object Level Permissions
Object Level Security এর মাধ্যমে আপনি বিশেষ অবজেক্টের জন্য GRANT, DENY, অথবা REVOKE অপারেশন করতে পারেন। এখানে কিছু সাধারণ permissions উল্লেখ করা হল:
- SELECT: টেবিল বা ভিউ থেকে ডেটা পড়ার অনুমতি।
- INSERT: টেবিল বা ভিউতে ডেটা সন্নিবেশ করার অনুমতি।
- UPDATE: টেবিল বা ভিউতে ডেটা পরিবর্তন করার অনুমতি।
- DELETE: টেবিল বা ভিউ থেকে ডেটা মুছে ফেলার অনুমতি।
- EXECUTE: স্টোরড প্রোসিজার বা ফাংশন চালানোর অনুমতি।
- ALTER: টেবিল বা ভিউ-এর কাঠামো পরিবর্তন করার অনুমতি।
- CONTROL: পুরো অবজেক্টে সম্পূর্ণ নিয়ন্ত্রণ, যা অন্তর্ভুক্ত করে CREATE, ALTER, এবং DROP অনুমতি।
2.2. Object Level Security এর উদাহরণ
আপনি যদি একটি নির্দিষ্ট টেবিলের উপর শুধুমাত্র একটি ব্যবহারকারীকে ডেটা পড়ার অনুমতি দিতে চান, তবে এটি করা যেতে পারে নিচের কোডের মাধ্যমে:
GRANT SELECT ON dbo.Employees TO UserName;
এটি dbo.Employees টেবিলের উপর শুধুমাত্র UserName ব্যবহারকারীকে SELECT করার অনুমতি দেবে।
এছাড়া, একটি ব্যবহারকারীকে একটি টেবিলের INSERT এবং UPDATE অনুমতি না দিয়ে শুধু SELECT করার অনুমতি দিতে:
GRANT SELECT ON dbo.Employees TO UserName;
DENY INSERT, UPDATE ON dbo.Employees TO UserName;
2.3. Permissions Denial and Revocation
Object Level Security তে আপনি permissions কে সরাসরি DENY বা REVOKE করতে পারেন। DENY অর্থাৎ কোনো নির্দিষ্ট permission এর বিরুদ্ধে নিষেধাজ্ঞা আরোপ করা, এবং REVOKE মানে পূর্বে দেওয়া অনুমতি প্রত্যাহার করা।
DENY:
DENY SELECT ON dbo.Employees TO UserName;REVOKE:
REVOKE SELECT ON dbo.Employees FROM UserName;
3. Schema এবং Object Level Security এর মধ্যে পার্থক্য
- Scope: Schema Level Security একটি স্কিমার মধ্যে সব অবজেক্টের জন্য একযোগে অনুমতি প্রদান ও নিয়ন্ত্রণ করার উপায়, যেখানে Object Level Security নির্দিষ্ট অবজেক্টের জন্য কাস্টম অনুমতি কন্ট্রোল দেয়।
- Granularity: Schema level permission বড় পরিসরে ব্যবহৃত হয়, যা পুরো schema কে কাভার করে। Object level permission খুবই সুনির্দিষ্ট এবং একক অবজেক্টের জন্য।
4. Conclusion
Schema Level Security এবং Object Level Security SQL Server এর নিরাপত্তা কন্ট্রোলের দুটি গুরুত্বপূর্ণ অংশ। Schema Level Security আপনাকে একটি পুরো স্কিমা বা সেট অব অবজেক্টের ওপর নিরাপত্তা কন্ট্রোল করতে সাহায্য করে, যেখানে Object Level Security আপনাকে প্রতিটি অবজেক্টের জন্য নির্দিষ্ট নিরাপত্তা সেট করতে সক্ষম করে। আপনার ডেটাবেসে নিরাপত্তা ব্যবস্থাপনা কার্যকরী করতে উভয় স্তরের নিরাপত্তার সঠিক ব্যবহার অত্যন্ত গুরুত্বপূর্ণ।
Read more